home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Freeware / StarBurn 10.5 / StarBurnSetup.exe / {app} / Wizards / Help / Help.chm / doctohelp.js < prev    next >
Text File  |  2008-03-25  |  14KB  |  546 lines

  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // dhtml functions: require IE4 or later
  4. //
  5. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  6.  
  7. var POPUP_COLOR = "LightYellow";
  8. var POPUP_REPEAT = "no-repeat";
  9. var POPUP_IMAGE = "url()";
  10. var IMAGE_OPEN = "%OpenPictureContentsTopic%";
  11. var IMAGE_CLOSE = "%ClosePictureContentsTopic%";
  12. var INDEX_SELECTED = "%OpenPictureNavigatorIndex%";
  13. var INDEX_UNSELECTED = "%ClosePictureNavigatorIndex%";
  14. var CONTENTS_SELECTED = "%OpenPictureNavigatorContents%";
  15. var CONTENTS_UNSELECTED = "%ClosePictureNavigatorContents%";
  16. var ANCHOR = "";
  17.  
  18. function dhtml_popup(url)
  19. {
  20.     ANCHOR = "";
  21.     var pop, main, body, x, y;
  22.  
  23.     // no url? then hide the popup
  24.     if (url == null || url.length == 0)
  25.     {
  26.         pop = document.all["popupFrame"];
  27.         if (pop != null)
  28.             pop.style.display = "none";
  29.         return;
  30.     }
  31.  
  32.     // if the popup frame is already open, close it first
  33.     if (dhtml_popup_is_open())
  34.     {
  35.         // the main window is the parent of the popup frame
  36.         main = window.parent;
  37.         body = main.document.body;
  38.         pop = main.document.all["popupFrame"];
  39.  
  40.         // add the popup origin to the event coordinates
  41.         x = pop.offsetLeft + window.event.offsetX;
  42.         y = pop.offsetTop + window.event.offsetY;
  43.  
  44.         // hide the popup frame
  45.         pop.style.display = "none";
  46.     }
  47.     else
  48.     {
  49.         // the main window is the current window
  50.         main = window;
  51.         body = document.body;
  52.         if (document.all["popupDiv"] == null)
  53.             body.insertAdjacentHTML("BeforeEnd", "<div id='popupDiv'></div>")
  54.  
  55.         pop = document.all["popupFrame"];
  56.  
  57.         // use the event coordinates for positioning the popup
  58.         x = window.event.x;
  59.         y = window.event.y;
  60.  
  61.         // account for the scrolling text region, if present
  62.         var nstx = document.all["nstext"];
  63.         if (nstx != null)
  64.         {
  65.             if (document.body.scroll == "no")
  66.                 y += nstx.scrollTop - nstx.offsetTop;
  67.         }
  68.         // get the popup frame, creating it if needed
  69.         if (pop == null)
  70.         {
  71.             var div = document.all["popupDiv"];
  72.             if (div == null)
  73.                 return;
  74.  
  75.             div.innerHTML = "<iframe id=\"popupFrame\" frameborder=\"none\" scrolling=\"none\" style=\"display:none\"></iframe>";
  76.             pop = document.all["popupFrame"];
  77.         }
  78.     }
  79.  
  80.     // get frame style
  81.     var sty = pop.style;
  82.  
  83.     // load url into frame
  84.     var anchorIndex = url.indexOf("#", 0);
  85.     if (anchorIndex >= 0)
  86.     {
  87.         ANCHOR = url.substr(anchorIndex + 1);
  88.         //workaround to reset current src
  89.         pop.src = "blank";
  90.         pop.src = url.substr(0, anchorIndex);
  91.     }
  92.     else
  93.         pop.src = url;    
  94.  
  95.     // initialize frame size/position
  96.     sty.position  = "absolute";
  97.     sty.border    = "1px solid #cccccc";
  98.     sty.posLeft   = x + body.scrollLeft     - 30000;
  99.     sty.posTop    = y + body.scrollTop + 15 - 30000;
  100.     var wid       = body.clientWidth;
  101.     sty.posWidth  = (wid > 500)? wid * 0.6: wid - 20;
  102.     sty.posHeight = 0;
  103.  
  104.     // wait until the document is loaded to finish positioning
  105.     main.setTimeout("dhtml_popup_position()", 100);
  106. }
  107.     
  108. function dhtml_popup_is_open()
  109. {
  110.     if (window.name != "")
  111.         return window.name != "right";
  112.     else
  113.         return window.location.href != window.parent.location.href;
  114. }
  115.  
  116. function dhtml_popup_position()
  117. {
  118.     // get frame
  119.     var pop = document.all["popupFrame"];
  120.     var frm = document.frames["popupFrame"];
  121.     var sty = pop.style;
  122.  
  123.     if (frm.document.readyState != "complete")
  124.     {
  125.         window.setTimeout("dhtml_popup_position()", 100);
  126.         return;
  127.     }
  128.  
  129.     if (frm.document.body.all.length == 0)
  130.         //if frame is empty, it contains its document, workaround must be applied
  131.         d2h_set_popup_html(frm.document);
  132.  
  133.     if (ANCHOR != "")
  134.         //for non-splitting mode topics that are not needed must be hidden
  135.         d2h_hide_unused_elements(frm.document);
  136.  
  137.     // get containing element (scrolling text region or document body)
  138.     var body = document.all["nstext"];
  139.     if (body == null)
  140.         body = document.body;
  141.  
  142.     // hide navigation/nonscrolling elements, if present
  143.     dhtml_popup_elements(frm.self.document);
  144.  
  145.     // get content size
  146.     sty.display = "block";
  147.     frm.scrollTo(0,1000);
  148.     sty.posHeight = frm.self.document.body.scrollHeight + 20;
  149.  
  150.     // make content visible
  151.     sty.posLeft  += 30000;
  152.     sty.posTop   += 30000;
  153.  
  154.     // adjust x position
  155.     if (sty.posLeft + sty.posWidth + 10 - body.scrollLeft > body.clientWidth)
  156.         sty.posLeft = body.clientWidth  - sty.posWidth - 10 + body.scrollLeft;
  157.  
  158.     // if the frame fits below the link, we're done
  159.     if (sty.posTop + sty.posHeight - body.scrollTop < body.clientHeight)
  160.         return;
  161.  
  162.     // calculate how much room we have above and below the link
  163.     var space_above = sty.posTop - body.scrollTop;
  164.     var space_below = body.clientHeight - space_above;
  165.     space_above -= 35;
  166.     space_below -= 20;
  167.     if (space_above < 50) space_above = 50;
  168.     if (space_below < 50) space_below = 50;
  169.  
  170.     // if the frame fits above or we have a lot more room there, move it up and be done
  171.     if (sty.posHeight < space_above || space_above > 2 * space_below)
  172.     {
  173.         if (sty.posHeight > space_above)
  174.             sty.posHeight = space_above;
  175.         sty.posTop = sty.posTop - sty.posHeight - 30;
  176.         return;
  177.     }
  178.  
  179.     // adjust frame height to fit below the link
  180.     sty.posHeight = space_below;
  181. }
  182.  
  183. function dhtml_popup_elements(doc)
  184. {
  185.     // hide navigation bar, if present
  186.     var nav = doc.all["ienav"];
  187.     if (nav != null)
  188.         nav.style.display = "none";
  189.  
  190.     // set popup background style
  191.     doc.body.style.backgroundColor = POPUP_COLOR;
  192.     doc.body.style.backgroundImage = POPUP_IMAGE;
  193.     doc.body.style.backgroundRepeat = POPUP_REPEAT;
  194.  
  195.     // reset background image/color of title row, if present
  196.     var trow = doc.all["TitleRow"];
  197.     if (trow != null)
  198.     {
  199.         trow.style.backgroundImage = "none";
  200.         trow.style.backgroundColor = "transparent";
  201.     }
  202.  
  203.     // reset border and background image/color of nonscrolling banner, if present
  204.     var nsb = doc.all["nsbanner"];
  205.     if (nsb != null)
  206.     {
  207.         nsb.style.borderBottom = "0px";
  208.         nsb.style.backgroundImage = "none";
  209.         nsb.style.backgroundColor = "transparent";
  210.         nsb.style.display = "none";
  211.     }
  212.  
  213.     // reset background image/color of scrolling text region, if present
  214.     var nstx = doc.all["nstext"];
  215.     if (nstx != null)
  216.     {
  217.         nstx.style.backgroundImage = "none";
  218.         nstx.style.backgroundColor = "transparent";
  219.     }
  220. }
  221.  
  222. function dhtml_nonscrolling_resize()
  223. {
  224.     if (document.body.clientWidth == 0)
  225.         return;
  226.  
  227.     var oBanner= document.all.item("nsbanner");
  228.     var oText= document.all.item("nstext");
  229.  
  230.     if (oText == null)
  231.         return;
  232.  
  233.     var oTitleRow = document.all.item("TitleRow");
  234.  
  235.     if (oTitleRow != null)
  236.         oTitleRow.style.padding = "4px 10px 4px 22px;";
  237.  
  238.     if (oBanner != null)
  239.     {
  240.         document.body.scroll = "no"
  241.         oText.style.overflow = "auto";
  242.          oBanner.style.width = document.body.clientWidth;
  243.         oText.style.paddingRight = "20px"; // Width issue code
  244.         oText.style.width = document.body.clientWidth;
  245.         oText.style.top = 0;  
  246.  
  247.         if (document.body.offsetHeight > oBanner.offsetHeight + 4)
  248.             oText.style.height = document.body.offsetHeight - oBanner.offsetHeight - 4;
  249.         else
  250.             oText.style.height = 0;
  251.     }    
  252.  
  253. //    try{nstext.setActive();} //allows scrolling from keyboard as soon as page is loaded. Only works in IE 5.5 and above.
  254. //    catch(e){}
  255.  
  256.     window.onresize = d2hnsresize;
  257.     window.onbeforeprint = d2h_before_print;
  258.     window.onafterprint = d2h_after_print;
  259.  
  260. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  261. //
  262. // d2h functions: browser-independent
  263. //
  264. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  265.  
  266. function d2hie()
  267. {
  268.     var ie = navigator.userAgent.toLowerCase().indexOf("msie");
  269.     return ie != -1 && parseInt(navigator.appVersion) >= 4;
  270. }
  271.  
  272. function d2hpopup(url)
  273. {
  274.     // use dhtml if we can
  275.     if (d2hie())
  276.     {
  277.         dhtml_popup(url);
  278.         return false;
  279.     }
  280.  
  281.     // use regular popups
  282.     if (url != null && url.length > 0)
  283.     {
  284.         var pop = window.open(url, '_d2hpopup', 'resizable=1,toolbar=0,directories=0,status=0,location=0,menubar=0,height=300,width=400');
  285.         pop.focus();                 // if the popup was already open
  286.         pop.onblur = "self.close()"; // doesn't work, not sure why...
  287.     }
  288.  
  289.     // and ignore the click
  290.     return false;
  291. }
  292.  
  293. function d2hwindow(url, name)
  294. {
  295.     if (name != 'main')
  296.     {
  297.         window.open(url, name, 'scrollbars=1,resizable=1,toolbar=0,directories=0,status=0,location=0,menubar=0,height=300,width=400');
  298.         return false;
  299.     }
  300.     return true;
  301. }
  302.  
  303. function d2hcancel(msg, url, line)
  304. {
  305.     return true;
  306. }
  307.  
  308. function d2hload()
  309. {
  310.     window.focus();
  311.     window.onerror = d2hcancel;
  312.     if (window.name == '_d2hpopup')
  313.     {
  314.         var major = parseInt(navigator.appVersion);
  315.         if (major >= 4)
  316.         {
  317.             var agent = navigator.userAgent.toLowerCase();
  318.             if (agent.indexOf("msie") != -1)
  319.                 document.all.item("ienav").style.display = "none";
  320.             else
  321.                 document.layers['nsnav'].visibility = 'hide';
  322.         }
  323.     }
  324. }
  325.  
  326. function d2hframeload()
  327. {
  328.     // for compatibility with HTML generated by earlier versions
  329. }
  330.  
  331. function d2htocload()
  332. {
  333.     if (d2hie())
  334.     {
  335.         var id, elt;
  336.         var count = document.all.length;
  337.  
  338.         for (i = 0; i < count; i++)
  339.         {
  340.             elt = document.all.item(i);
  341.  
  342.             if (elt.id.substring(0, 1) == "c")
  343.                 elt.style.display = "none";
  344.  
  345.             else if (elt.id.substring(0, 2) == "mi")
  346.                 d2himage(elt, IMAGE_CLOSE, "closed.gif");
  347.         }
  348.     }
  349. }
  350.  
  351. function d2hclick()
  352. {
  353.     if (d2hie())
  354.     {
  355.         var id = window.event.srcElement.id;
  356.  
  357.         var n = id.substring(0, 1);
  358.         if (id.substring(0, 1) != "m")
  359.             return;
  360.  
  361.         var sub = id.substring(2);
  362.         var elt = document.all.item("c" + sub);
  363.         var img = document.all.item("mi" + sub);
  364.  
  365.         if (elt != null)
  366.         {
  367.             if (elt.style.display == "none")
  368.             {
  369.                 elt.style.display = "";
  370.                 d2himage(img, IMAGE_OPEN, "open.gif");
  371.             }
  372.             else
  373.             {
  374.                 elt.style.display = "none";
  375.                 d2himage(img, IMAGE_CLOSE, "closed.gif");
  376.             }
  377.         }
  378.     }
  379. }
  380.  
  381. // Sets a specified relative URL of image to specified HTML element
  382. function d2himage(element, image, def)
  383. {
  384.     if (element != null)
  385.     {
  386.         // Sets the default image if open image is not initialized
  387.         if (image.substring(0, 2) == "%O")
  388.             image = def;
  389.  
  390.         // Sets the default image if close image is not initialized
  391.         else if (image.substring(0, 2) == "%C")
  392.             image = def;
  393.  
  394.         // Hide element if image is missing
  395.         if (image == "")
  396.             element.style.visibility = "hidden";
  397.  
  398.         // Sets the specified image to element and displays it
  399.         else
  400.         {
  401.             element.src = image;
  402.             element.style.visibility = "visible";
  403.         }    
  404.     }
  405. }
  406.  
  407. function d2hswitchpane(id)
  408. {
  409.     var sel, unsel, selimg, unselimg;
  410.     var prefix = id.substring(0, 8);
  411.     if (prefix == "D2HIndex")
  412.     {
  413.         sel = document.all("D2HIndex");
  414.         unsel = document.all("D2HContents");
  415.         selimg = INDEX_SELECTED;
  416.         unselimg = CONTENTS_UNSELECTED;
  417.     }
  418.     else if (prefix == "D2HConte")
  419.     {
  420.         sel = document.all("D2HContents");
  421.         unsel = document.all("D2HIndex");
  422.         selimg = CONTENTS_SELECTED;
  423.         unselimg = INDEX_UNSELECTED;
  424.     }
  425.  
  426.     if (sel != null)
  427.     {
  428.         sel.className = sel.id + "Selected";
  429.         var selimgelm = document.all(sel.id + "Image");
  430.         d2himage(selimgelm, selimg, "");
  431.     }
  432.  
  433.     if (unsel != null)
  434.     {
  435.         unsel.className = unsel.id + "Unselected";
  436.         var unselimgelm = document.all(unsel.id + "Image");
  437.         d2himage(unselimgelm, unselimg, "");
  438.     }
  439. }
  440.  
  441. function d2hactivepane()
  442. {
  443.     var id = "D2HContents";
  444.     var frms = window.parent.frames;
  445.     if (frms.length < 2)
  446.         return id;
  447.  
  448.     var frm = frms("left");
  449.     if (frm == null)
  450.         return id;
  451.  
  452.     var body = frm.document.body;
  453.     if (body != null)        
  454.         id = body.id;
  455.  
  456.     return id;                
  457. }
  458.  
  459. function d2hnsresize()
  460. {
  461.     if (d2hie())
  462.     {
  463.         dhtml_nonscrolling_resize();
  464.         var id = d2hactivepane();
  465.         d2hswitchpane(id);
  466.     }
  467. }
  468.  
  469. function d2h_before_print()
  470. {
  471.     document.body.scroll = "yes";
  472.     var oText = document.all.item("nstext");
  473.     if (oText != null)
  474.     {
  475.         oText.style.overflow = "visible";
  476.         oText.style.width = "100%";
  477.     }
  478.     var nav = document.all["ienav"];
  479.     if (nav != null)
  480.         nav.style.display = "none";
  481.     var oBanner = document.all.item("nsbanner");
  482.     if (oBanner != null)
  483.     {
  484.         oBanner.style.borderBottom = "0px";
  485.         oBanner.style.margin = "0px 0px 0px 0px";
  486.         oBanner.style.width = "100%";
  487.     }
  488. }
  489.  
  490. function d2h_after_print()
  491. {
  492.     document.location.reload();
  493. }
  494.  
  495. function d2h_set_popup_html(doc)
  496. {
  497.     doc.body.innerHTML = document.body.innerHTML;
  498.     var frame = doc.all("popupFrame");
  499.     if (frame != null)
  500.         frame.removeNode(true);
  501.     var nst = doc.all["nstext"];
  502.     if (nst != null)
  503.     {
  504.         nst.style.paddingTop = "0px";
  505.         nst.style.paddingLeft = "10px";
  506.         nst.style.removeAttribute("top", false);
  507.         nst.style.removeAttribute("width", false);
  508.         nst.style.removeAttribute("height", false);
  509.     }
  510.     var count = doc.all.length;
  511.     var elt, i;
  512.     //need to reset onclick event to prevent script error
  513.     //because scripts don't work when body is copied from document to frame
  514.     for (i = 0; i < count; i++)
  515.     {
  516.         elt = doc.all.item(i);
  517.         if ((elt.tagName == "A") || (elt.tagName == "a"))
  518.             elt.onclick = "";
  519.     }
  520. }
  521.  
  522. function d2h_hide_unused_elements(doc)
  523. {
  524.     var title = doc.all["TitleRow"];
  525.     if (title != null)
  526.         title.style.display = "none";
  527.     var nsb = doc.all["nsbanner"];
  528.     if (nsb != null)
  529.         nsb.style.display = "none";
  530.  
  531.     var count = doc.all.length;
  532.     var show = false, inTopic = false, id, elt, i;
  533.     for (i = 0; i < count; i++)
  534.     {
  535.         elt = doc.all.item(i);
  536.         var id = elt.id;
  537.         if (!inTopic && (id.length > 10) && (id.substring(0, 10) == "_D2HTopic_"))
  538.             inTopic = true;
  539.         if (elt.className == "_D2HAnchor")
  540.             show = (elt.name == ANCHOR);
  541.                    if (inTopic && !show)
  542.             elt.style.display = "none";
  543.     }
  544. }
  545.